//package com.wing.db.config.util;
//
//import com.alibaba.druid.pool.DruidDataSource;
//import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;
//
//import javax.sql.DataSource;
//import java.sql.*;
//import java.util.HashMap;
//import java.util.Map;
//
///**
// * spring动态数据源（需要继承AbstractRoutingDataSource）
// *
// * @author owen
// * @create 2017年7月2日
// */
//public class DynamicDataSource extends AbstractRoutingDataSource {
//
//    // 当前使用的数据源标识
//    public static ThreadLocal<String> name = new ThreadLocal<>();
//
//    // 当前所有数据源
//    public static Map<Object, Object> targetDataSources = new HashMap<>();
//
//    // 业务数据库前缀
//    public static final String BUSINESS_PREFIX = "cloud-digital-system";
//
//    // 用户数据库前缀
//    public static final String USER_PREFIX = "cloud-digital-system-user";
//
//    @Autowired
//    DataSource dataSourceCore;
//
//    // 返回当前数据源标识
//    @Override
//    public Object determineCurrentLookupKey() {
//        return name.get();
//    }
//
//    @Override
//    public void afterPropertiesSet() {
//        targetDataSources.put("core", dataSourceCore);
//        // 查询数据源配置
////        queryDataSourceConfig();
//
//        super.setTargetDataSources(targetDataSources);
//
//        // 为defaultTargetDataSource 设置默认的数据源
//        super.setDefaultTargetDataSource(dataSourceCore);
//
//        super.afterPropertiesSet();
//    }
//
//    private void queryDataSourceConfig() {
//        String url = "jdbc:mysql://175.27.143.47:3306/cloud-digital-system-user?characterEncoding=utf-8&autoReconnect=true&failOverReadOnly=false&allowPublicKeyRetrieval=true&useSSL=false&serverTimezone=UTC&serverTimezone=Asia/Shanghai";
//        String username = "root";
//        String password = "123456!Ab";
//        String driverClassName = "com.mysql.cj.jdbc.Driver";
//
//        Connection newConn = null; // 连接刚刚创建的数据库
//        try {
//            newConn = DriverManager.getConnection(url, username, password);
//            Statement newSmt = newConn.createStatement();
//            String sql = "select * from `sys_data_source`";
//            ResultSet resultSet = newSmt.executeQuery(sql);
//            while (resultSet.next()){
//                String name = resultSet.getString("name");
//                String ip = resultSet.getString("ip");
//                String port = resultSet.getString("port");
//                DataSource dataSource1 = DruidDataSourceBuilder.create().build();
//                ((DruidDataSource) dataSource1).setUrl("jdbc:mysql://"+ip+":"+port+"/"+BUSINESS_PREFIX+"-"+name+"?characterEncoding=utf-8&autoReconnect=true&failOverReadOnly=false&allowPublicKeyRetrieval=true&useSSL=false&serverTimezone=UTC&serverTimezone=Asia/Shanghai");
//                ((DruidDataSource) dataSource1).setUsername(username);
//                ((DruidDataSource) dataSource1).setPassword(password);
//                ((DruidDataSource) dataSource1).setDriverClassName(driverClassName);
//                targetDataSources.put(name, dataSource1);
//
//                DataSource dataSource2 = DruidDataSourceBuilder.create().build();
//                ((DruidDataSource) dataSource2).setUrl("jdbc:mysql://"+ip+":"+port+"/"+USER_PREFIX+"-"+name+"?characterEncoding=utf-8&autoReconnect=true&failOverReadOnly=false&allowPublicKeyRetrieval=true&useSSL=false&serverTimezone=UTC&serverTimezone=Asia/Shanghai");
//                ((DruidDataSource) dataSource2).setUsername(username);
//                ((DruidDataSource) dataSource2).setPassword(password);
//                ((DruidDataSource) dataSource2).setDriverClassName(driverClassName);
//                targetDataSources.put("user-"+name, dataSource2);
//            }
//            newSmt.close();
//            newConn.close();
//        } catch (SQLException e) {
//            e.printStackTrace();
//        }
//    }
//
//}